﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using LibrarySync2.Common.Event;
using LibrarySync2.Common.Enum;
using System.IO;

namespace LibrarySync2.Common.Interfaces
{
    public interface IMediaFile : IFileSystemItem
    {
        long FileSize { get; }

        string Id { get; set; }
        string CanonicalName { get; set; }

        int Width { get; set; }
        int Height { get; set; }
        int VideoBitRate { get; set; }
        int AudioBitRate { get; set; }
        int RunTime { get; set; }
        bool HasSubtitleStreams { get; set; }

        bool Is1080p { get; }
        bool Is720p { get; }

        long CalculateFullSize();

        bool IsBetterThan(IMediaFile matchingFile);

        void CopyToDestination(BackgroundWorker copyWorker, EventHandler<CopyEventArgs> copyEvent,
            MediaFileUpdateType mediaFileUpdateType, DirectoryInfo destination, bool includeMetadata);
    }
}
